1. Field of the Invention
The present invention relates to the field encoding and decoding of constrained codes. More particularly, the present invention relates to write precompensation techniques, in conjunction with Maximum Transition Rate (MTR) codes, for high data rate recording applications.
2. Description of the Related Art
According to the NRZI magnetic recording convention, a xe2x80x9c1xe2x80x9d is recorded as a transition in magnetic polarity, and a xe2x80x9c0xe2x80x9d as the absence of a transition in magnetic polarity. Nearby 1""s can interfere with one another, thereby causing intersymbol interference (ISI). In very high density magnetic recording, nearby 1""s can interfere nonlinearly resulting in another deleterious effect, known as nonlinear transition shift (NLTS), in which, for example, the second transition in a string of two consecutive transitions is attracted closer to the first transition (i.e., moved earlier in time) than if the transition had been written as an isolated transition. Moreover, a string of successive nearby transitions may cause the write head to change polarity so fast that the write head may not reach a steady state after each transition, resulting in under-saturation of the medium.
These detrimental effects can be mitigated using two different techniques: maximum transition run (MTR) coding and write precompensation. An MTR(j) code limits the maximum number of consecutive transitions to j. In other words, an MTR(j) forbids the appearance of j+1 consecutive 1""s. For instance, the most extreme version of MTR coding is MTR(j=1), which allows only isolated transitions. That is, an MTR(j=1) code forbids the appearance of the string xe2x80x9c11xe2x80x9d, which is known as a dibit. An MTR(j=1) code is also known as a run length limited (RLL) code having a d=1 constraint. Such an MTR code, however, carries a significant code penalty, leading to either a lower user density or difficulty with timing recovery. The code rate for an MTR(j=1) a code can be at most 0.6942.
A less extreme version of an MTR code is an MTR(j=2) code that allows isolated transitions and dibits, but forbids tribits, i.e., xe2x80x9c111xe2x80x9d. Such a constraint permits a much higher code rate (potentially up to 0.8792). MTR(j=2) codes were originally introduced by J. Moon and B. Brickner for increasing code distance, and therefore enhancing performance of extended partial response channels. See J. Moon et al., xe2x80x9cMaximum transition run codes for data storage systems,xe2x80x9d IEEE Trans. on Magnetics, Vol. 32, pp. 3992-3994, September 1996.
More recently, many new MTR codes, and variants thereof, have been introduced. See, for example, U.S. Pat. No. 5,731,768 to Tsang, W. G. Bliss, xe2x80x9cAn 8/9 rate time-varying trellis code for high density magnetic recording,xe2x80x9d IEEE Trans. on Magnetics, Vol. 33, pp. 2746-2748, September 1997; W. G. Bliss et al., xe2x80x9cThe performance of generalized maximum transition run trellis codes,xe2x80x9d IEEE Trans. on Magnetics., Vol. 34, part I, pp. 85-90, January 1998; B. Brickner et al, xe2x80x9cDesign of a rate 6/7 maximum transition run code,xe2x80x9d IEEE Trans. on Magnetics., vol. 33, part I, pp. 27-49-2751, September 1997; and K. K. Fitzpatrick et al., xe2x80x9cTime-varying MTR codes for high density magnetic recording,xe2x80x9d in Proc. IEEE Global Telecommun, Conf., pp. 1250-1255, November 1997.
While limiting the number of consecutive transitions is important, it is also important to limit the maximum length of strings, such as 000000 . . . and 001100110011 . . . Limiting the length of a string, such as 000000 . . . , known as the RLL k-constant, is essential for timing recovery. Limiting the length of a string, such as 001100110011 . . . , known as the twins t-constraint, is essential for limiting path memory in a Viterbi detector for partial response channels.
For write precompensation, the second technique for mitigating ISI, NLTS and under saturation of the medium, the second transition in a string of two consecutive transitions is delayed. For strings of three or more consecutive transitions, a more complicated write precompensation schedule is used for mitigating NLTS. The performance of such a scheme depends on accurate measurement of NLTS.
Experimental evaluation of MTR(j=2) codes in conjunction with conventional write precompensation schemes are disclosed by Z. A. Keim et al., xe2x80x9cExperimental Performance Comparison of FDTS/DF Detectors: 8/9 (0, k) vs. 4/5 MTR Codes,xe2x80x9d IEEE Trans. on Magnetics, Vol. 33, 2731 (1998), and S. G. McCarthy et al., xe2x80x9cDistance Enhancing Codes for EEPRML: Performance Comparison Using Spinstand Data,xe2x80x9d IEEE Trans. Magnetics, Vol. 33, 2734 (1998).
Thus, what is needed is a simple technique for cleanly writing consecutive dibits at a high data rate that combines a write precompensation technique with an MTR code.
The present invention provides a simple technique for cleanly writing consecutive dibits at a high data rate that combines a write precompensation technique with an MTR code.
The advantages of the present invention are provided by a method for write-precompensating a waveform for magnetically recording a waveform on a magnetic medium. According to the invention, a user data stream is encoded into an encoded data stream so that the encoded data stream has no tribits and no consecutive dibits. No delay is applied to a first transition of a dibit of the encoded data stream. An isolated transition of the encoded data stream is delayed by a first predetermined amount of time. The second transition of a dibit of the encoded data stream is delayed by a second predetermined amount of time, such that the second predetermined amount of time is substantially twice the first predetermined amount of time. The first and second predetermined amounts of time are selected so that the closest interdibit transition of the encoded data stream becomes about equal to a distance between two neighboring intradibit transitions of the encoded data stream. Preferably, the encoded data stream satisfies a predetermined run length limited (RLL) k-constraint of k=13 and a predetermined twin t-constraint of t=15. In one embodiment of the present invention, the encoded data stream is encoded by a block code at rate 8:10. In another embodiment of the present invention, the encoded data stream is encoded by a block code at rate 16:19.
Preferably, the user data stream is encoded based on a time-varying technique that alternates between a first phase and a second phase, the first phase being an 8:9 phase and the second phase being an 8:10 phase. The encoded data stream is then decoded using a sliding-block technique having a window consisting of two blocks that alternate between a 9-bit block followed by a 10-bit block and a 10-bit block followed by a 9-bit block.